/*
 * Cunchutijiegou.h
 *
 *  Created on: 2022年7月9日
 *      Author: wocao
 *  存儲體結構類，包含存儲體表和位示圖表，均為靜態成員
 *  定義了地址轉換後返回的結構體cunchuti_addr，包含存儲體號和塊地址
 */
#include <vector>
#include <mutex>
#include "Cunchuti.h"

//地址轉換後返回的結構體
#ifndef CUNCHUTI_ADDR
#define CUNCHUTI_ADDR
typedef struct cunchuti_addr {
	int cunchuti_num;		//存儲體號
	unsigned long cunchuti_add;		//塊地址
} num_add, *pnum_add;
#endif

#ifndef CUNCHUTI_CUNCHUTIJIEGOU_H_
#define CUNCHUTI_CUNCHUTIJIEGOU_H_

class Cunchuti_jiegou {
public:
	static mutex mutex_cu;
	static mutex mutex_bitview;
	static mutex mutex_bityu;
	static vector<Cunchuti> cunchuti_table;		//存儲體表，存放多個存儲體信息
	static vector<unsigned long> cunchuti_bitview;//位示圖表，1表示已被使用，0表示空閒，經地址轉換後定位到某個存儲體的某一塊
	static long bit_view_yu;				//位圖用vector<long>表示，記錄最後一個元素使用了幾位
	static unsigned long cunchuti_size;
	static unsigned long cunchuti_usedsize;
};

#endif /* CUNCHUTI_CUNCHUTIJIEGOU_H_ */
